import axios from 'axios';
import { ElMessage } from 'element-plus';

export function useDownload() {
  function download(url: string) {
    axios({
      method: 'get',
      url, // 这里自行设置传参
      responseType: 'blob', // 这里是重点，敲黑板
    })
      .then((res) => {
        // 获取响应头中的文件名
        let filename = res.config.url?.split('/').pop() ?? '文件下载_1.zip'; //下载后文件名
        const extension = filename.substring(filename.lastIndexOf('.') + 1);
        const originName = filename.substring(0, filename.lastIndexOf('_'));
        filename = `${originName}.${extension}`;
        // 创建 a 标签
        let elink = document.createElement('a');
        document.body.appendChild(elink);
        elink.style.display = 'none'; // 隐藏起来
        elink.download = filename;
        // 如果后端没有返回，可以自己设置下载文件的名称 elink.download = 'XXX文件.pdf';
        let blob = new Blob([res.data]);
        // 兼容webkix浏览器，处理webkit浏览器中herf自动添加blob前缀，默认在浏览器打开而不是下载
        const URL = window.URL || window.webkitURL;
        elink.href = URL.createObjectURL(blob); // 通过createObjectURL方法转换成对象url
        elink.click();
        document.body.removeChild(elink);
        URL.revokeObjectURL(elink.href); // 释放URL 对象
      })
      .catch((err) => {
        if (err?.response?.status === 404) {
          ElMessage({
            message: '文件不存在，请联系管理员更新！',
            type: 'error',
          });
          return;
        }
        ElMessage({
          message: '服务器繁忙，请稍后再试！',
          type: 'error',
        });
      });
  }
  return { download };
}
